批量上传图片和拖动上传
<%@ WebHandler Language="C#" Class="GenericHandler1" %>
using System;
using System.Web;
using System.Web.SessionState;
using System.Collections.Generic;
using System.Text;
using System.IO;
public class GenericHandler1 : IHttpHandler,IRequiresSessionState{
string ab = string.Empty;
string getcookiename = string.Empty;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("123");
getcookiename = "1.txt";//context.Request.Cookies["Txt"].Value.ToString();
if (HttpContext.Current.Session["a"] == null)
{
HttpContext.Current.Session.Add("a", "");
ab = HttpContext.Current.Session["a"].ToString();
}
//context.Response.Write(HttpContext.Current.Session["1"].ToString());
else
{
ab = HttpContext.Current.Session["a"].ToString();
}
UploadFile(context);
}
public bool IsReusable
{
get
{
return false;
}
}
public void UploadFile(HttpContext context)
{
context.Response.CacheControl = "no-cache";
string s_rpath = FileHelper.GetUploadPath();//@"E:\My Documents\Visual Studio 2008\WebSites\SWFUpload\demos\applicationdemo.net";
byte[] byData = new byte[1000];
char[] charData = new char[1000];
string Datedir = DateTime.Now.ToString("yy-MM-dd");
string updir = s_rpath "\\" Datedir;
string ulrname1= @"C:";
// s_rpath "\\" Datedir;
string extname = string.Empty;
string fullname = string.Empty;
string filename = string.Empty;
string Name12 = string.Empty;
string sessionname = string.Empty;
string asv = string.Empty;
if (context.Request.Files.Count > 0)
{
try
{
for (int j = 0; j < context.Request.Files.Count; j )
{
HttpPostedFile uploadFile = context.Request.Files[j];
int offset = Convert.ToInt32(context.Request["chunk"]);
int total = Convert.ToInt32(context.Request["chunks"]);
string name = context.Request["name"];
//文件没有分块
/* if (total == 1)
{ */
if (uploadFile.ContentLength > 0)
{
if (!Directory.Exists(updir))
{
Directory.CreateDirectory(updir);
}
extname = Path.GetExtension(uploadFile.FileName);
fullname = DateTime.Now.Year.ToString() DateTime.Now.Month.ToString() DateTime.Now.Day.ToString() DateTime.Now.Hour.ToString() DateTime.Now.Minute.ToString() DateTime.Now.Second.ToString();
filename = uploadFile.FileName;
Name12 = filename.Substring(filename.Length-4,4);
Random ran=new Random();
int RandKey=ran.Next(1,1000);
uploadFile.SaveAs(string.Format("{0}\\{1}", ulrname1, "GoodsCoverImage" RandKey.ToString() fullname Name12));
sessionname= "GoodsCoverImage" RandKey.ToString() fullname Name12 ";";
ab = ab sessionname;
}
/*}
else
{ */
//文件 分成多块上传
fullname = WriteTempFile(uploadFile, offset);
if (total - offset == 1)
{
//如果是最后一个分块文件 ,则把文件从临时文件夹中移到上传文件 夹中
System.IO.FileInfo fi = new System.IO.FileInfo(fullname);
string oldFullName = string.Format("{0}\\{1}", updir, uploadFile.FileName ".part");
FileInfo oldFi = new FileInfo(oldFullName);
if (oldFi.Exists)
{
//文件名存在则删除旧文件
oldFi.Delete();
}
fi.MoveTo(oldFullName);
}
/* } */
}
// StreamWriter sw = new StreamWriter(ulrname1 "\\test.txt");
StreamWriter sw =File.AppendText(ulrname1 "\\" getcookiename.Trim());
sw.Write(ab);
sw.Close();
HttpContext.Current.Session.Add("abc","1233");
}
catch (Exception ex)
{
context.Response.Write("Message" ex.ToString());
}
}
}
/// <summary>
/// 保存临时文件
/// </summary>
/// <param name="uploadFile"></param>
/// <param name="chunk"></param>
/// <returns></returns>
private string WriteTempFile(HttpPostedFile uploadFile, int chunk)
{
string tempDir = FileHelper.GetTempPath();
if (!Directory.Exists(tempDir))
{
Directory.CreateDirectory(tempDir);
}
string fullName = string.Format("{0}\\{1}", tempDir, uploadFile.FileName);
if (chunk==0)
{
//如果是第一个分块,则直接保存
uploadFile.SaveAs(fullName);
}
else
{
//如果是其他分块文件 ,则原来的分块文件,读取流,然后文件最后写入相应的字节
FileStream fs = new FileStream(fullName, FileMode.Append);
if (uploadFile.ContentLength>0)
{
int FileLen = uploadFile.ContentLength;
byte[] input = new byte[FileLen];
// Initialize the stream.
System.IO.Stream MyStream = uploadFile.InputStream;
// Read the file into the byte array.
MyStream.Read(input, 0, FileLen);
fs.Write(input,0,FileLen);
fs.Close();
}
}
return fullName;
}
}
/// <summary>
///FileHelper 的摘要说明
/// </summary>
public class FileHelper
{
public FileHelper()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 获取上传目录
/// </summary>
/// <returns></returns>
public static string GetUploadPath()
{
string path = HttpContext.Current.Server.MapPath("~/");
string dirname = GetTempDirName();//GetDirName();
string uploadDir = path "\\" dirname;
CreateDir(uploadDir);
return uploadDir;
}
/// <summary>
/// 获取临时目录
/// </summary>
/// <returns></returns>
public static string GetTempPath()
{
string path = HttpContext.Current.Server.MapPath("~/");
string dirname = GetTempDirName();
string uploadDir = path "\\" dirname;
CreateDir(uploadDir);
return uploadDir;
}
private static string GetDirName()
{
return System.Configuration.ConfigurationManager.AppSettings["uploaddir"];
}
private static string GetTempDirName()
{
return System.Configuration.ConfigurationManager.AppSettings["tempdir"];
}
public static void CreateDir(string path)
{
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
}
}
评论